﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;

namespace SocketServer
{
    class MainClass
    {
        static void Main(string[] args)
        {
        //Console.WriteLine("Hello World");
        ////Socket  地址族,套接字类型,协议 (最常用的就是字节流套接字)
        //Socket listenfd = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
        ////Bind 将 IP 地址字符串转换为 System.Net.IPAddress 实例。
        //IPAddress ipAdr = IPAddress.Parse("127.0.0.1");
        ////用指定的地址和端口号初始化 System.Net.IPEndPoint 类的新实例。
        //IPEndPoint ipEp = new IPEndPoint(ipAdr, 1234);
        ////使 System.Net.Sockets.Socket 与一个本地终结点相关联。
        //listenfd.Bind(ipEp);
        ////Liten 将 System.Net.Sockets.Socket 置于侦听状态。 参数:挂起连接队列的最大长度。  args:0表示不限制
        //listenfd.Listen(0);
        //Console.WriteLine( "[服务器]启动成功");
        //while (true)
        //{
        //    //Accept 新建连接的 System.Net.Sockets.Socket。
        //    Socket connfd = listenfd.Accept();
        //    Console.WriteLine("[服务器]Accept");
        //    //Recv
        //    byte[] readBuff = new byte[1024];
        //    //从绑定的 System.Net.Sockets.Socket 套接字接收数据，将数据存入接收缓冲区。
        //    int count = connfd.Receive(readBuff);
        //    //   bytes:  包含要解码的字节序列的字节数组。
        //    //   index:  第一个要解码的字节的索引。
        //    //   count:  要解码的字节数。    
        //    string str = System.Text.Encoding.UTF8.GetString(readBuff, 0, count);
        //    Console.WriteLine("[服务器接收]"+str);
        //    byte[] bytes = System.Text.Encoding.Default.GetBytes("serv echo " + str);
        //    connfd.Send(bytes);
        //}

        Console.WriteLine("Hello World");
        Serv serv = new Serv();
        serv.Start("127.0.0.1", 1234);
        while (true)
        {
            string str = Console.ReadLine();
            switch (str)
            {
                case "quit":
                    return;
            }
        }

        }
       
    }
}
